#include <iostream>
using namespace std;

//纯虚函数和抽象类
class Base
{
public:
    // 纯虚函数
    virtual void func() = 0;
    
    //只要有一个纯虚函数，这个类就称为 抽象类
    //抽象类的特点：
    //1、无法实例化对象
    //2、抽象类中的子类  必须重写父类中的纯虚函数，否则也属于抽象类
    
};

class Son:public Base
{
    virtual void func()
    {
        cout << "func函数调用" << endl;
    }
};

void test1()
{
    //error: Base b;
    //error: new Base;  抽象类无法实例化对象

    Son s;//子类必须重写父类中的纯虚数，否则无法实例化对象

    Base* base = new Son;//多态
    base->func();
}

int main()
{
    test1();
    return 0;
}